package com.szrt.java.utils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class ScottFileUtil {
	
	
	public static void readwriteFile(String source,String dest) throws Exception {
		
		//1 读
		
		File in = new File(source);
		
		File out = new File(dest);
		
		System.out.println(in.length());
		InputStream fis = new FileInputStream(in);
		OutputStream fos = new FileOutputStream(out);
		
		byte[] b  = new byte[1024];
		
		int len=0;
		while((len = fis.read(b))!=-1){
			fos.write(b, 0, len);
		}
		
		//关闭流  游戏规则：先来的后关 后来先关
		fos.close();
		fis.close();
	}
	
	/**
	 * 把目标字符串target写入到指定的文件filePath中
	 * @param target
	 * @param filePath
	 */
	public static void write(String target,String filePath){
		FileOutputStream fos = null;
		try {
			//1 创建一个指向filePath的字节输出流
			fos = new FileOutputStream(new File(filePath));
			//2 把目标字符串target写入到指定的文件filePath中
			byte[] b =target.getBytes();
			fos.write(b);
		}catch (IOException e) {
			e.printStackTrace();
		}finally{
			//3 关闭流
			if(null != fos){
				try {
					fos.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		
	}
	
	
	/**
	 * 读取并返回指定文件中的内容
	 * @param filePath
	 * @return
	 */
	public static String readFile(String filePath){
		FileInputStream fis=null;
		StringBuffer    sb= new StringBuffer();
		try {
			fis = new FileInputStream(new File(filePath));
			byte[] b= new byte[5];
			int len= 0 ;
			while( (len =fis.read(b)) != -1){
				sb.append(new String(b,0,len));
			}
		}catch (IOException e) {
			e.printStackTrace();
		}finally{
			if(null != fis){
				try {
					fis.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		return sb.toString();
	}
	
	/**
	 * 创建1个指定的文件
	 * 坑：File只能针对文件或者文件夹进行操作。
	 * 不能读取文件中的内容。必须是流才能读取
	 * @param filePath
	 * @throws IOException
	 */
	public static void createFile(String filePath) throws IOException{
		//成功创建1个文件有个前提：该文件所在的目录必须存在。
		File file = new File(filePath);
		
		System.out.println(file.isFile());
		System.out.println(file.exists());
		System.out.println(file.isDirectory());
		
		if(!file.exists()){
			//表示file不存在
			
			//拿到文件所在的目录
			File parent = file.getParentFile();
			
			if(!parent.exists()){
				//如果这个目录不存才需要创建。如果已经存在就不需要创建。 建立好文件夹及子文件夹  递归创建目录
				parent.mkdirs();
			}
			file.createNewFile();
		}
	}
	
	/**
	 * 局限性：只能读取英文的字符不能读取中文的字符
	 * @param target
	 * @param filePath
	 */
	public static void readAndWrite(String target,String filePath){
		
		write(readFile(target),filePath);
	}
	

}
